package Function_Study;

import java.util.ArrayList;
import java.util.Collections;

public class FunctionDemo3 {
    public static void main(String[] args) {
        /*
            方法引用(引用成员方法)
            格式:
                对象::成员方法
                1.其他类:其他类对象::方法名
                this和super引用处不能是静态方法
                2.本类:this::方法名
                3.父类:super::方法名
            需求:
                集合中有一些名字,按照要求过滤数据
                数据:"雏鹤爱", "樱岛麻衣", "小鸟游六花", "时崎狂三", "四糸乃", "夜刀神十香"
                要求:收集名字开头为"小鸟游",而且长度大于等于四个字的
         */

        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,  "雏鹤爱", "樱岛麻衣", "小鸟游六花", "小鸟游十花", "小鸟游南", "时崎狂三", "四糸乃", "夜刀神十香");

        //静态方法中是没有this的,所以只能在非静态的方法中引用
        //list.stream().filter(this::StringJudge).forEach(System.out::println);
        list.stream().filter(new StringOperation()::StringJudge).forEach(System.out::println);
    }

//    public boolean StringJudge(String s){
//        return s.startsWith("小鸟游") && s.length() == 3;
//    }
}

class StringOperation{
    public boolean StringJudge(String s){
        return s.startsWith("小鸟游") && s.length() > 4;
    }
}
